p[20]={'a','b','c'}用sizeof计算长度是20 还是4

来源:百度知道 编辑:UC知道 时间:2024/05/19 03:39:37

当然是20

char p1[20]={'a','b','c'};
char* p2 = p1;

sizeof(p1) //20
sizeof(p2) //4

指针的大小都是4字节
数组名的大小就是整个数组的大小,
这个记住就好了

是20,因为你开始已经给数组p声情了20个字节的空间。你往里面装的虽然只有四个字符,但是还有16个空间是空着的。就像你的袋子里很大,但是只装了很少东西。

int p[20]={'a','b','c'};
printf("%d ",sizeof(p)); -- VC++ 80, TC 40

char p[20]={'a','b','c'};
printf("%d ",sizeof(p)); -- 20

声明了有20个元素。 1个 char是1, 1个short int 是2, 1个long int 是4.